package set;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Objects;
import java.util.Set;
import java.util.function.Consumer;

import org.junit.Test;

public class HashSetDemo {
	@Test
	public void create() {
		Set<String> set = new HashSet<>(100);
		set.add("abc");
		set.add(null);
		set.add(null);
		set.add("def");
		set.add("hij");
		set.add("abc");
		System.out.println(set);
		
		Set<String> set2 = new HashSet<>(set);
	}
	
	@Test
	public void methods() {
		Set<String> set = new HashSet<>(100);
		set.add("abc");
		set.add(null);
		set.add(null);
		set.add("def");
		set.add("hij");
		set.add("abc");
		// 所有关于下标的方法都没有
		System.out.println("长度:" + set.size());
		System.out.println("是否包含:" + set.contains("abc"));
		System.out.println("是否为空:" + set.isEmpty());
		System.out.println("移除:" + set.remove("abc"));
		// 符合条件的移除
		set.removeIf(Objects::isNull);
		System.out.println(set);
		// 清空
		set.clear();
		System.out.println(set);
	}
	
	@Test
	public void forEach() {
		Set<String> set = new HashSet<>(100);
		set.add("abc");
		set.add(null);
		set.add(null);
		set.add("def");
		set.add("hij");
		set.add("abc");
		// 1.增强for
		for (String s : set) {
			System.out.println(s);
		}
		System.out.println("------------------");
		
		// 2.迭代器
		Iterator<String> it = set.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}
		System.out.println("------------------");
		
		// 3.forEach
		set.forEach(new Consumer<String>() {
			@Override
			public void accept(String t) {
				System.out.println(t);
			}
		});
		// lambda
		set.forEach(s->System.out.println(s));
		// 内置函数
		set.forEach(System.out::println);
		System.out.println("------------------");
	}
}








